package com.zw.a.basic.a08.demo03_string;

//案例: 演示String的面试题, 即: Java的常量优化机制.
/*
    Java中针对于常量是有优化机制的:
        针对于byte类型:
            如果是常量相加: 会直接运算, 然后看结果在不在左边的数据类型范围内, 在不报错, 不在就报错.
            如果是变量相加: 会提升类型, 然后运算, 提升规则:   byte, short, char -> int -> long -> float -> double
        针对于String类型:
             如果是常量拼接:   会直接拼接, 不会在(堆区)开辟新空间.
             如果是变量拼接:   会在堆区开辟新空间.
 */
public class StringDemo04 {
    public static void main(String[] args) {
        byte b1 = 3;
        byte b2 = 4;
        byte b3 = 3 + 4;
        //byte b4 = b1 + b2;            //这行代码会报错, 因为提升数据类型了.
        System.out.println("-------------------------------");

        String s1 = "ab";
        String s2 = "c";
        String s3 = "abc";

        //System.out.println(s3 == (new StringBuilder()).append(s1).append(s2).toString());
        //System.out.println(s3 == (new StringBuilder()).append("ab").append(s2).toString());


        System.out.println(s3 == s1 + s2);          //false
        System.out.println(s3 == "ab" + s2);        //false
        System.out.println(s3 == "ab" + "c");       //true
    }
}
